<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="Asciidoctor 1.5.2">
<title>Preface</title>
<link rel="stylesheet" href="./css/hibernate.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.2.0/css/font-awesome.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.js"></script>
<script>document.addEventListener('DOMContentLoaded', prettyPrint)</script>
</head>
<body class="article">
<div id="header">
</div>
<div id="content">
<div class="sect1">
<h2 id="preface">Preface</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Working with both Object-Oriented software and Relational Databases can be cumbersome and time consuming.
Development costs are significantly higher due to a paradigm mismatch between how data is represented in objects versus relational databases.
Hibernate is an Object/Relational Mapping solution for Java environments.
The term <a href="http://en.wikipedia.org/wiki/Object-relational_mapping">Object/Relational Mapping</a> refers to the technique of mapping data from an object model representation to a relational data model representation (and visa versa).</p>
</div>
<div class="paragraph">
<p>Hibernate not only takes care of the mapping from Java classes to database tables (and from Java data types to SQL data types), but also provides data query and retrieval facilities.
It can significantly reduce development time otherwise spent with manual data handling in SQL and JDBC.
Hibernate’s design goal is to relieve the developer from 95% of common data persistence-related programming tasks by eliminating the need for manual, hand-crafted data processing using SQL and JDBC.
However, unlike many other persistence solutions, Hibernate does not hide the power of SQL from you and guarantees that your investment in relational technology and knowledge is as valid as always.</p>
</div>
<div class="paragraph">
<p>Hibernate may not be the best solution for data-centric applications that only use stored-procedures to implement the business logic in the database, it is most useful with object-oriented domain models and business logic in the Java-based middle-tier.
However, Hibernate can certainly help you to remove or encapsulate vendor-specific SQL code and will help with the common task of result set translation from a tabular representation to a graph of objects.</p>
</div>
<div class="sect2">
<h3 id="_get_involved">Get Involved</h3>
<div class="ulist">
<ul>
<li>
<p>Use Hibernate and report any bugs or issues you find. See <a href="http://hibernate.org/issuetracker">Issue Tracker</a> for details.</p>
</li>
<li>
<p>Try your hand at fixing some bugs or implementing enhancements. Again, see <a href="http://hibernate.org/issuetracker">Issue Tracker</a>.</p>
</li>
<li>
<p>Engage with the community using mailing lists, forums, IRC, or other ways listed in the <a href="http://hibernate.org/community">Community section</a>.</p>
</li>
<li>
<p>Help improve or translate this documentation. Contact us on the developer mailing list if you have interest.</p>
</li>
<li>
<p>Spread the word. Let the rest of your organization know about the benefits of Hibernate.</p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_system_requirements">System Requirements</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Hibernate 5.2 and later versions require at least Java 1.8 and JDBC 4.2.</p>
</div>
<div class="paragraph">
<p>Hibernate 5.1 and older versions require at least Java 1.6 and JDBC 4.0.</p>
</div>
<div class="admonitionblock tip">
<table>
<tr>
<td class="icon">
<i class="fa icon-tip" title="Tip"></i>
</td>
<td class="content">
<div class="paragraph">
<p>When building Hibernate 5.1 or older from sources, you need Java 1.7 due to a bug in the JDK 1.6 compiler.</p>
</div>
</td>
</tr>
</table>
</div>
<div class="sect2">
<h3 id="_getting_started_guide">Getting Started Guide</h3>
<div class="paragraph">
<p>New users may want to first look through the <a href="https://docs.jboss.org/hibernate/orm/5.2/quickstart/html_single/">Hibernate Getting Started Guide</a> for basic information as well as tutorials.
There is also a series of <a href="http://docs.jboss.org/hibernate/orm/5.2/topical/html_single/">topical guides</a> providing deep dives into various topics.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<div class="paragraph">
<p>While having a strong background in SQL is not required to use Hibernate, it certainly helps a lot because it all boils down to SQL statements.
Probably even more important is an understanding of data modeling principles.
You might want to consider these resources as a good starting point:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><a href="http://en.wikipedia.org/wiki/Data_modeling">Data Modeling Wikipedia definition</a></p>
</li>
<li>
<p><a href="http://www.agiledata.org/essays/dataModeling101.html">Data Modeling 101</a></p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Understanding the basics of transactions and design patterns such as <em>Unit of Work</em> <a href="Bibliography.html#PoEAA">PoEAA</a> or <em>Application Transaction</em> are important as well.
These topics will be discussed in the documentation, but a prior understanding will certainly help.</p>
</div>
</td>
</tr>
</table>
</div>
</div>
</div>
</div>
</div>
<div id="footer">
<div id="footer-text">
Last updated 2017-02-16 12:14:38 +01:00
</div>
</div>
</body>
</html>